{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Isotonic Regression"
      ],
      "metadata": {
        "nteract": {
          "transient": {
            "deleting": false
          }
        }
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Isotonic regression or monotonic regression is the technique of fitting a free-form line to a sequence of observations such that the fitted line is non-decreasing (or non-increasing) everywhere, and lies as close to the observations as possible. (Wikipedia)"
      ],
      "metadata": {
        "nteract": {
          "transient": {
            "deleting": false
          }
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "from matplotlib.collections import LineCollection\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# yfinance is used to fetch data \n",
        "import yfinance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:37:59.959Z",
          "iopub.execute_input": "2022-05-29T00:37:59.964Z",
          "iopub.status.idle": "2022-05-29T00:37:59.969Z",
          "shell.execute_reply": "2022-05-29T00:37:59.918Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2014-01-01'\n",
        "end = '2018-08-27'\n",
        "\n",
        "# Read data \n",
        "dataset = yf.download(symbol,start,end)\n",
        "\n",
        "# View Columns\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 completed\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume\nDate                                                    \n2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400\n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200\n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300\n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100\n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-02</th>\n      <td>3.85</td>\n      <td>3.98</td>\n      <td>3.84</td>\n      <td>3.95</td>\n      <td>3.95</td>\n      <td>20548400</td>\n    </tr>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "shell.execute_reply": "2022-05-29T00:38:00.653Z",
          "iopub.status.busy": "2022-05-29T00:37:59.976Z",
          "iopub.execute_input": "2022-05-29T00:37:59.980Z",
          "iopub.status.idle": "2022-05-29T00:38:00.557Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset['Increase_Decrease'] = np.where(dataset['Volume'].shift(-1) > dataset['Volume'],1,0)\n",
        "dataset['Buy_Sell_on_Open'] = np.where(dataset['Open'].shift(-1) > dataset['Open'],1,0)\n",
        "dataset['Buy_Sell'] = np.where(dataset['Adj Close'].shift(-1) > dataset['Adj Close'],1,0)\n",
        "dataset['Returns'] = dataset['Adj Close'].pct_change()\n",
        "dataset = dataset.dropna()"
      ],
      "outputs": [],
      "execution_count": 3,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:00.564Z",
          "iopub.execute_input": "2022-05-29T00:38:00.568Z",
          "iopub.status.idle": "2022-05-29T00:38:00.576Z",
          "shell.execute_reply": "2022-05-29T00:38:00.658Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 4,
          "data": {
            "text/plain": "            Open  High   Low  Close  Adj Close    Volume  Increase_Decrease  \\\nDate                                                                          \n2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200                  1   \n2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300                  1   \n2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100                  0   \n2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700                  0   \n2014-01-09  4.20  4.23  4.05   4.09       4.09  30667600                  0   \n\n            Buy_Sell_on_Open  Buy_Sell   Returns  \nDate                                              \n2014-01-03                 1         1  0.012658  \n2014-01-06                 1         1  0.032500  \n2014-01-07                 1         0  0.012106  \n2014-01-08                 0         0  0.000000  \n2014-01-09                 0         1 -0.021531  ",
            "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Open</th>\n      <th>High</th>\n      <th>Low</th>\n      <th>Close</th>\n      <th>Adj Close</th>\n      <th>Volume</th>\n      <th>Increase_Decrease</th>\n      <th>Buy_Sell_on_Open</th>\n      <th>Buy_Sell</th>\n      <th>Returns</th>\n    </tr>\n    <tr>\n      <th>Date</th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n      <th></th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>2014-01-03</th>\n      <td>3.98</td>\n      <td>4.00</td>\n      <td>3.88</td>\n      <td>4.00</td>\n      <td>4.00</td>\n      <td>22887200</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0.012658</td>\n    </tr>\n    <tr>\n      <th>2014-01-06</th>\n      <td>4.01</td>\n      <td>4.18</td>\n      <td>3.99</td>\n      <td>4.13</td>\n      <td>4.13</td>\n      <td>42398300</td>\n      <td>1</td>\n      <td>1</td>\n      <td>1</td>\n      <td>0.032500</td>\n    </tr>\n    <tr>\n      <th>2014-01-07</th>\n      <td>4.19</td>\n      <td>4.25</td>\n      <td>4.11</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>42932100</td>\n      <td>0</td>\n      <td>1</td>\n      <td>0</td>\n      <td>0.012106</td>\n    </tr>\n    <tr>\n      <th>2014-01-08</th>\n      <td>4.23</td>\n      <td>4.26</td>\n      <td>4.14</td>\n      <td>4.18</td>\n      <td>4.18</td>\n      <td>30678700</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0</td>\n      <td>0.000000</td>\n    </tr>\n    <tr>\n      <th>2014-01-09</th>\n      <td>4.20</td>\n      <td>4.23</td>\n      <td>4.05</td>\n      <td>4.09</td>\n      <td>4.09</td>\n      <td>30667600</td>\n      <td>0</td>\n      <td>0</td>\n      <td>1</td>\n      <td>-0.021531</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
          },
          "metadata": {}
        }
      ],
      "execution_count": 4,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:00.584Z",
          "iopub.execute_input": "2022-05-29T00:38:00.590Z",
          "iopub.status.idle": "2022-05-29T00:38:00.602Z",
          "shell.execute_reply": "2022-05-29T00:38:00.661Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "n = len(dataset['Adj Close'])\n",
        "X = np.array(dataset['Open'].values)\n",
        "y = dataset['Adj Close'].values"
      ],
      "outputs": [],
      "execution_count": 5,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:00.610Z",
          "iopub.execute_input": "2022-05-29T00:38:00.614Z",
          "iopub.status.idle": "2022-05-29T00:38:00.623Z",
          "shell.execute_reply": "2022-05-29T00:38:00.664Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.linear_model import LinearRegression\n",
        "from sklearn.isotonic import IsotonicRegression"
      ],
      "outputs": [],
      "execution_count": 6,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:00.631Z",
          "iopub.execute_input": "2022-05-29T00:38:00.635Z",
          "shell.execute_reply": "2022-05-29T00:38:01.487Z",
          "iopub.status.idle": "2022-05-29T00:38:01.446Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "ir=IsotonicRegression()\n",
        "y_ir=ir.fit_transform(X,y)"
      ],
      "outputs": [],
      "execution_count": 7,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.454Z",
          "iopub.execute_input": "2022-05-29T00:38:01.459Z",
          "iopub.status.idle": "2022-05-29T00:38:01.467Z",
          "shell.execute_reply": "2022-05-29T00:38:01.491Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "lines=[[[i,y[i]],[i,y_ir[i]]] for i in range(n)]\n",
        "lc=LineCollection(lines)\n",
        "plt.figure(figsize=(16,4))\n",
        "plt.plot(X,y,'r.',markersize=12)\n",
        "plt.plot(X,y_ir,'b.-',markersize=12)\n",
        "plt.gca().add_collection(lc)\n",
        "plt.legend(('Data','Isotonic Fit','Linear Fit'))\n",
        "plt.title(\"Isotonic Regression\")"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 8,
          "data": {
            "text/plain": "Text(0.5, 1.0, 'Isotonic Regression')"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": "<Figure size 1152x288 with 1 Axes>",
            "image/png": "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r78TDvvX2QqfW7Zs4cMf/jBVVVXMmTOHZ555BoAHH3yQ448/njlz5nDjjTcCcNNNN7F7926qqqoIBoMA3HHHHcyZM4c5c+bwne98B/A9lcceeyxXX301xx13HOeddx67d+8GYPHixd3B8cUXX+Sss87ixBNP5LTTTmPnzp0DtrelpYU5c+awb98+vva1r/HQQw9RVVXFQw89lJ0vREREREQkh9591/dannsulJfDV74CxcWwbJlf8uR7S5spYVfSOSXsor6mZWQaLEM2quZ4fuELfo2ddH71K9jb648eHR3w+c/7H9hUqqoglgEH9MADD3D++edTV1dHJBKho6ODzZs3c+ONN7J+/XoOOuggzjvvPB599FFuu+027rrrLjbEGrx+/Xruu+8+fv3rX+Oc4/TTT+cjH/kIBx10EK+99hoPPvgg99xzDxdffDE//OEPqa6u7r7vvn37uOSSS3jooYc49dRT2bFjB5NTzIT+3//9X6qqqgA4++yz+fKXvwxAcXEx3/jGN2hubuauu+7K7MOKiIiIiIyA3bvhJz+BBx6Axx/362wefTTccgtceikcdVTPsb56bfqqtjJ2jKrgOZDeoXOg/YN16qmncuWVV9LZ2cknP/lJqqqq+MUvfsG8efOYMWMGAMFgkKeffppPfvKTSeeuW7eOT33qU5SW+snPn/70p3nmmWf4xCc+wRFHHNEdGE855RRaWlqSzn311Vc59NBDOfXUUwHYf//9U7YvPtQ2rvd1RERERERGo0gEfvELHzZ/+EPYuRMOPRSuvRaCQb/sSbo5msGGcwg2xF/Nim0y1oyq4DlQz2RlpR9e21tFBTz11PDv/+EPf5inn36an/70pyxevJgvfvGLHHDAAcO+7n777df9PBAIdA+1FREREREZr5yD5mYfNv/93+Gtt2D//eGzn/Vhc948CARGupWSL2Nqjmd9PZSUJO8rKfH7syEcDnPIIYdw9dVXc9VVV/Gb3/yG0047jV/+8pds27aNSCTCgw8+yEc+8hEAioqK6OzsBOBDH/oQjz76KB0dHezatYtHHnmED33oQxnd95hjjmHLli28+OKLAOzcuZOurq5BtX3q1KkZzQsVEREREcml116DW2+FD34QTjsNGhrgzDPh4Yd9+Lz3Xpg/X6FzohlVPZ4DidXw8aWVW/0E5Pr6nv3D9dRTT/Gv//qvFBUV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kQnGOfc0sL3X7ouAFbHnK4BP5rNNIrmW5udeZNxzzm1xzv0m9nwn8ApwGPq9L3mm4CnSwwFPmtl6M6sZ6caI5NkhzrktsedvAYeMZGNE8ug6M/ttbCiuhhrKuGZmlcBJwK/R733JMwVPkR7nOOdOBj6KH4by4ZFukMhIcH6dLa21JRNBI/ABoArYAnxrRFsjkkNmNgX4IfAF59yOxPf0e1/yQcFTJMY592bs8R3gEeC0kW2RSF69bWaHAsQe3xnh9ojknHPubedcxDkXBe5Bv/dlnDKzInzoDDnnfhTbrd/7klcKniKAmZWa2dT4c+A84Pf9nyUyrvwnsCj2fBHw2Ai2RSQv4v/ojvkU+r0v45CZGfB94BXn3B0Jb+n3vuSV+Z51kYnNzI7E93ICFAIPOOfqR7BJIjljZg8C84DpwNvA14FHgf8AyoEwcLFzToVYZNxI83M/Dz/M1gEtwDUJc95ExgUzOwd4BvgdEI3tvhk/z1O/9yVvFDxFREREREQkpzTUVkRERERERHJKwVNERERERERySsFTREREREREckrBU0RERERERHJKwVNERERERERySsFTREREREREckrBU0RERERERHLq/wOx5bsMghl84AAAAABJRU5ErkJggg==\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "execution_count": 8,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.476Z",
          "iopub.execute_input": "2022-05-29T00:38:01.481Z",
          "iopub.status.idle": "2022-05-29T00:38:01.604Z",
          "shell.execute_reply": "2022-05-29T00:38:01.595Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "ir.score(X, y)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 9,
          "data": {
            "text/plain": "0.9982775188322193"
          },
          "metadata": {}
        }
      ],
      "execution_count": 9,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.613Z",
          "iopub.execute_input": "2022-05-29T00:38:01.619Z",
          "iopub.status.idle": "2022-05-29T00:38:01.631Z",
          "shell.execute_reply": "2022-05-29T00:38:01.713Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split\n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, \n",
        "                                   test_size=0.4, random_state=101)"
      ],
      "outputs": [],
      "execution_count": 10,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.639Z",
          "iopub.execute_input": "2022-05-29T00:38:01.643Z",
          "iopub.status.idle": "2022-05-29T00:38:01.653Z",
          "shell.execute_reply": "2022-05-29T00:38:01.718Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "ir.fit(X_train,y_train)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 11,
          "data": {
            "text/plain": "IsotonicRegression()"
          },
          "metadata": {}
        }
      ],
      "execution_count": 11,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.661Z",
          "iopub.execute_input": "2022-05-29T00:38:01.667Z",
          "iopub.status.idle": "2022-05-29T00:38:01.679Z",
          "shell.execute_reply": "2022-05-29T00:38:01.727Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "predictions = ir.predict(X_test)\n",
        "plt.scatter(y_test,predictions)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 12,
          "data": {
            "text/plain": "<matplotlib.collections.PathCollection at 0x2265380acf8>"
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": "<Figure size 432x288 with 1 Axes>",
            "image/png": "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\n"
          },
          "metadata": {
            "needs_background": "light"
          }
        }
      ],
      "execution_count": 12,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.686Z",
          "iopub.execute_input": "2022-05-29T00:38:01.692Z",
          "iopub.status.idle": "2022-05-29T00:38:01.741Z",
          "shell.execute_reply": "2022-05-29T00:38:01.852Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred = ir.predict(X_test)"
      ],
      "outputs": [],
      "execution_count": 13,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.748Z",
          "iopub.execute_input": "2022-05-29T00:38:01.753Z",
          "iopub.status.idle": "2022-05-29T00:38:01.761Z",
          "shell.execute_reply": "2022-05-29T00:38:01.855Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 14,
          "data": {
            "text/plain": "array([ 4.06250012,  2.32555548,  9.98166672, 13.85857146, 13.04999992,\n        6.81648221, 11.86472333, 11.1049993 ,  4.57499993,  3.69000006,\n        2.63333337,  7.13577886, 13.40666713, 12.80058822,  2.28799996,\n       13.66025007, 11.38999998, 13.66399994, 15.84166688,  3.64000005,\n        6.01432434, 11.64375007, 10.87000036,  3.70333338,  4.31444499,\n       12.01166654,  6.87888892,  2.82999992,  2.63333337,  2.12499959,\n        2.60499998, 18.82657537, 11.38999998,  4.6165911 ,  3.77000001,\n       11.64375007,  4.27666672, 13.51454535,  3.81999993,  1.86374998,\n        8.75904421,  1.95285714,  6.06054062,  3.95666671,  2.28799996,\n       19.36666679,  2.74923076, 10.48666684, 10.70714269,  2.74923076,\n       12.80058822,  2.41666667,  3.96200006,  2.32555548,  4.25699997,\n        2.72000003, 12.80058822,  7.47285713,  3.64000005,  3.62333337,\n       14.16899986, 13.85857146,  2.74923076,  1.95285714,  2.51999998,\n       11.20750022, 14.05122406, 13.51454535,  7.58500004, 17.17193762,\n        4.02846157, 10.875     ,  2.09000002,  3.68250006,  2.74923076,\n       14.76000023,  6.46749997,  1.83166667, 12.52666654, 13.04999992,\n        2.31999996, 11.87666702,  4.02846157,  2.74923076, 11.20750022,\n        1.972     , 11.87666702,  4.67204556,  2.33999991,  2.74923076,\n        3.05428566, 16.56833347,  2.69714291,  3.64000005,  4.36333389,\n        3.62333337,  3.97000015, 12.52666654,  2.68625003, 12.52666654,\n        2.25500003,  4.25699997,  2.62893945,  2.74923076,  4.78295448,\n        1.72      , 11.12249994, 10.00724941,  5.93551729,  3.50000008,\n        9.98166672, 12.0844442 ,  2.74923076, 10.03499985,  9.44941852,\n        2.74923076,  2.60499998, 11.12249994,  2.62454542,  3.77000001,\n       12.45      ,  2.08000001,  2.32555548, 13.53661581,  6.87888892,\n        2.28399997,  2.28799996,  4.25699997,  2.09000002, 13.51454535,\n        1.92666666,  4.02846157,  2.03899996, 12.52666654,  3.77000001,\n       12.45      , 12.95333322,  2.47000003,  2.47999994, 13.59179091,\n        1.89999998,  5.16166669, 11.50666682,  2.28799996, 10.70714269,\n        6.66000009,  5.16888896, 12.01166654,  3.55500007,  2.81999993,\n        3.0714285 ,  2.16000001,  1.89999998,  2.31999996,  1.83166667,\n        2.48833338,  3.85249996, 16.56833347,  1.83166667,  2.90999999,\n        4.25699997,  2.84999998,  3.69000006,  1.83166667,  2.09000002,\n        4.25699997,  2.74923076,  3.64000005, 11.2637513 ,  4.02846157,\n       12.95333322, 10.70714269, 13.85857146,  3.38249996, 13.04999992,\n       13.65800018,  2.48833338,  4.16444439, 11.03749835, 10.70999985,\n       12.45      ,  1.89999998,  1.83166667, 10.03499985, 10.48666684,\n       12.80058822, 11.38999998,  2.74923076, 19.07466698, 11.64375007,\n        3.38249996,  3.64000005,  2.62893945, 11.00500011,  4.06250012,\n        9.98166672, 11.41750002, 11.12249994,  3.77000001,  2.62893945,\n        3.64000005, 12.26857158,  3.69000006, 14.16899986,  4.0420001 ,\n        2.63333337, 14.43567631,  3.01999998,  5.25448268,  4.16444439,\n        2.74923076,  1.83166667,  6.07513522,  3.81999993,  4.12249994,\n        2.44333335,  1.972     ,  3.70333338,  4.13000011,  3.68250006,\n       13.43000031, 12.80058822,  3.95666671,  1.75      , 11.20750022,\n        2.73461539,  2.74923076,  8.9568251 ,  4.06250012, 14.64324342,\n       13.66399994, 15.16999984,  4.16444439,  2.16000001,  8.74539352,\n        9.53989506,  2.31999996,  3.64000005, 13.85857146, 11.06999969,\n        2.03899996,  6.66000009, 13.92279001, 13.66399994, 12.80058822,\n       14.42270305,  2.48833338,  4.25699997, 12.52666654,  4.12249994,\n        2.90999999,  2.31999996,  2.94666665,  3.70333338,  4.57499993,\n        2.32555548,  2.31999996,  3.03714282, 12.52666654, 11.64375007,\n        3.96200006,  6.05324338, 12.26857158,  6.84777774,  3.81999993,\n        4.2833335 ,  1.86374998,  4.36333389,  2.62893945,  2.51999998,\n        2.72000003,  2.09000002,  2.41666667,  2.48833338, 11.64375007,\n       13.38333284,  6.46749997,  9.6185013 ,  3.86500001,  3.70333338,\n       14.08333333,  3.38249996,  2.68625003, 12.52666654,  2.51999998,\n        3.68250006,  2.74923076, 12.52666654, 11.38999998, 12.80058822,\n       11.64375007,  3.77000001,  2.83499991,  4.06250012, 13.20499979,\n        3.85249996,  9.98166672,  2.16000001, 11.64375007,  4.02846157,\n       14.76000023,  2.48833338, 14.16899986, 11.55000019,  4.0420001 ,\n        8.80000019,  1.75      ,  3.81999993,  2.74923076,  4.0420001 ,\n        2.31999996,  2.74923076,  2.73461539, 12.26571446, 12.22999954,\n               nan,  4.0420001 ,  4.02846157, 11.38999998,  2.28799996,\n       13.55868627, 10.48666684, 13.51454535,  2.31999996, 12.80058822,\n       13.66250004,  5.19999997,  2.08000001, 11.41750002,  1.75      ,\n       10.05000067,  6.46749997,  2.74923076,  4.06250012,  1.75      ,\n        4.57499993,  3.77000001,  2.83499991,  2.25749999,  1.89999998,\n       14.76000023,  4.16444439,  5.3089654 ,  2.69714291, 11.03749835,\n       13.85857146,  2.31999996,  2.44333335,  2.16000001,  4.31444499,\n        2.51999998,  6.46749997,  6.01189196, 12.52666654,  5.14722214,\n        2.47999994, 10.48666684, 11.53555665,  2.74923076, 13.51454535,\n        9.86499977, 12.01166654,  3.38249996,  4.25699997,  3.77000001,\n        6.87888892,  4.99999946, 11.20750022, 10.70999985, 12.80058822,\n       10.48666684, 12.80058822,  1.86374998,  3.235     ,  2.74923076,\n        1.95285714,  2.32555548, 13.04999992,  3.38249996,  3.38249996,\n        2.48833338, 18.85808303, 11.31999969,  3.62333337,  6.84777774,\n        6.08000008, 13.85857146, 12.52666654, 14.16899986, 11.23562576,\n       14.33189275,  2.74923076,  3.95666671, 12.01166654, 12.80058822,\n        4.27666672,  2.32555548, 13.04999992,  8.3358428 , 12.52666654,\n        9.79833301,  8.98698363,  2.60499998,  4.0420001 ,  2.33999991,\n        6.46749997,  2.73461539,  2.83499991,  6.66000009, 14.6951352 ,\n        4.38777775, 10.06500006,  1.972     , 12.52666654,  2.68625003,\n        1.92666666,  2.25500003,  4.27666672, 10.48666684, 12.52666654,\n        3.64000005,  2.84999998,  8.92666658,  4.02846157,  2.09000002,\n       13.04999992,  6.87888892,  2.33444444,  2.31999996,  2.74923076,\n        2.31999996,  2.32555548,  4.65818162,         nan,  4.12249994,\n       10.34357047, 10.0257497 ,  2.47999994,  5.18166681,  4.25699997,\n        2.16000001,  2.6099999 , 11.64375007, 15.82500068, 16.56833347,\n        6.87888892, 18.46127085,  4.12249994, 13.85857146,  6.46749997,\n        4.06250012, 10.875     , 13.66399994,  4.0420001 , 14.16899986,\n        6.33833334, 13.66399994,  4.13000011,  1.92666666, 10.48666684,\n       12.80058822,  1.95285714, 12.52666654,  2.48833338, 12.80058822,\n       12.52666654, 10.70999985,  8.92666658])"
          },
          "metadata": {}
        }
      ],
      "execution_count": 14,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.769Z",
          "iopub.execute_input": "2022-05-29T00:38:01.773Z",
          "iopub.status.idle": "2022-05-29T00:38:01.784Z",
          "shell.execute_reply": "2022-05-29T00:38:01.859Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred[np.isnan(y_pred)] = 0"
      ],
      "outputs": [],
      "execution_count": 15,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.791Z",
          "iopub.execute_input": "2022-05-29T00:38:01.797Z",
          "iopub.status.idle": "2022-05-29T00:38:01.804Z",
          "shell.execute_reply": "2022-05-29T00:38:01.862Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import mean_squared_error\n",
        "print('The rmse of prediction is:', mean_squared_error(y_test, y_pred) ** 0.5)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "The rmse of prediction is: 1.137100655612605\n"
          ]
        }
      ],
      "execution_count": 16,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.811Z",
          "iopub.execute_input": "2022-05-29T00:38:01.815Z",
          "iopub.status.idle": "2022-05-29T00:38:01.826Z",
          "shell.execute_reply": "2022-05-29T00:38:01.866Z"
        }
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn import metrics\n",
        "print('MAE:', metrics.mean_absolute_error(y_test, y_pred))\n",
        "print('MSE:', metrics.mean_squared_error(y_test, y_pred))\n",
        "print('RMSE:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "MAE: 0.20616241947056094\n",
            "MSE: 1.2929979009946162\n",
            "RMSE: 1.137100655612605\n"
          ]
        }
      ],
      "execution_count": 17,
      "metadata": {
        "collapsed": true,
        "jupyter": {
          "source_hidden": false,
          "outputs_hidden": false
        },
        "nteract": {
          "transient": {
            "deleting": false
          }
        },
        "execution": {
          "iopub.status.busy": "2022-05-29T00:38:01.832Z",
          "iopub.execute_input": "2022-05-29T00:38:01.837Z",
          "iopub.status.idle": "2022-05-29T00:38:01.847Z",
          "shell.execute_reply": "2022-05-29T00:38:01.869Z"
        }
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "name": "python",
      "version": "3.6.13",
      "mimetype": "text/x-python",
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "pygments_lexer": "ipython3",
      "nbconvert_exporter": "python",
      "file_extension": ".py"
    },
    "kernelspec": {
      "argv": [
        "C:/Users/Tin/Anaconda3\\python.exe",
        "-m",
        "ipykernel_launcher",
        "-f",
        "{connection_file}"
      ],
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "nteract": {
      "version": "0.28.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}